//
//  HMHomeTableViewController.swift
//  sinaweibo
//
//  Created by lst on 16/5/19.
//  Copyright © 2016年 lst. All rights reserved.
//

import UIKit
import SVProgressHUD

private let HomeCellId = "HomeCellId"
class HMHomeTableViewController: HMBaseTableViewController {
    //定义模型数组
    lazy var statusListViewModel: HMStatusListViewModel =  HMStatusListViewModel()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        if !userLogin {
            visitorLoginView.updateUI("关注一些人,回到这里看看有什么惊喜", imageName: "visitordiscover_feed_image_smallicon",isHome: true)
            return
        }
        
        setNavBar()
        //设置tableView
        prepareForTableView()
        loadData()
        
    }
    
    private func prepareForTableView() {
        //准备tableView
        //注册cell  [UITableViewCell class]
        //在未登录状态下 tableView 为nil
        tableView.registerClass(HMStatusCell.self, forCellReuseIdentifier: HomeCellId)
        //设置cell的高度
        //        tableView.rowHeight = 300
        tableView.rowHeight = UITableViewAutomaticDimension
        //设置预估行高  行高的自动计算
        //提高tableView加载效率 预估行高 * 数据源的数量 = contentSize  -> tableView才可以滚动
        tableView.estimatedRowHeight = 300
        tableView.separatorStyle = .None
        //给刷新控件实例化
        refreshControl = UIRefreshControl()
        //添加触发相应的事件
        refreshControl?.addTarget(self, action: #selector(HMHomeTableViewController.loadData), forControlEvents: .ValueChanged)
    }
    
    
    //设置导航条
    private func setNavBar (){
        let popItem = UIBarButtonItem(imageName: "navigationbar_pop", target: self, action: #selector(HMHomeTableViewController.push))
        navigationItem.rightBarButtonItem = popItem
    }
    
    
    @objc private func push() {
        let detail = HMDetailViewController()
        detail.hidesBottomBarWhenPushed = true
        navigationController?.pushViewController(detail, animated: true)
        
    }
}
//加载数据
extension HMHomeTableViewController{
    @objc private func loadData(){
        statusListViewModel.loadData { (isSuccess) in
            self.refreshControl?.endRefreshing()
            if !isSuccess {
                //提示用户登录失败
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                
                return
            }
            self.tableView.reloadData()
            
        }
    }
    
}




//数据源方法
extension HMHomeTableViewController{
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        return statusListViewModel.statusViewModelArray.count
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        //以后获取缓存cell都是使用这种方式
        //需要注册cell的类型 和 可重用标识
        let cell = tableView.dequeueReusableCellWithIdentifier(HomeCellId, forIndexPath: indexPath) as! HMStatusCell
        //        cell.textLabel?.text = statuses[indexPath.row].user?.name
        cell.statusViewModel = statusListViewModel.statusViewModelArray[indexPath.row]
//        print(statusListViewModel.statusViewModelArray[indexPath.row].status?.retweeted_status?.text)
        return cell
    }
    
}

